Component({
  // 组件初始数据
  data: {
  },

  // 接受 父→子 数据
  properties: {
    // 要接受的数据的名称
    tabsTitle: {
      type: Array,
      value: []
    }
  },

  // 注意: 页面的事件回调函数, 与 data 同层级!!!

  // 注意: 组件的事件回调函数, 则存放在 methods 中!!!
  methods: {
    // 处理 tabs-title 事件
    handleTabsTitle (e) {
      // console.log("handleTabsTitle");
      // console.log(e);
      // 1. 获取被点击的索引
      const { index } = e.currentTarget.dataset;
      // console.log(index);
      // 子 → 父 触发父组件中的自定义事件, 同时传递数据给 父组件
      // this.triggerEvent("functionName",Attrs);
      this.triggerEvent("handleTabsChange", { index });
      // 接下来的在父组件中进行
      // 2. 获取原标题数组
      // 注意: 解构是复制了变量的引用, 在循环中修改会导致源数据也被修改
      // let { tabsTitle } = this.data;
      // 严谨做法: 深拷贝 (以下方式针对简单数据/数组)
      // let tabsTitle = JSON.parse(JSON.stringify(this.data.tabsTitle));
      // console.log(tabsTitle);
      // 3. 循环数组
      // 注意: [].forEach 若修改了v, 则导致源数组也被修改
      //  3.1 给每一循环项的选中属性改为 false
      //  3.2 当前选择项为 true
      // tabsTitle.forEach((v, i) => i === index ? v.isActive = true : v.isActive = false);
      // 4. 保存数据
      // this.setData({ tabsTitle })
    }
  }
})